iT邦幫忙

2023 iThome 鐵人賽

DAY 8
0

國外各大數據網站都有推出各自的數據指標,FanGraphs 當然也是不例外。這篇文章會介紹一些可以使用之前所介紹過的方法來取得,並且是我個人認為在 FanGraphs 上很特別或獨有的資料。

Wins Above Replacement (WAR)

第一個想介紹的,也是 FanGraphs 用來排序他們的排行榜所使用的數據指標,WAR。他的全名是 Wins Above Replacement,直接翻譯就是替換後的勝場差距,顧名思義就是假設這名球員受傷,必須要把他替換成小聯盟球員,那球隊會少多少場勝場。如果是反而讓球隊多了勝場,那該名球員的 WAR 就會是負的。

其實除了 FanGraphs,其他數據網站像是 Baseball Reference 也有推出自己的 WAR。不過他們的評分標準不盡相同,會有他們自己的特色。大家在使用的時候會加前綴來辨識不同的 WAR,像是 FanGraphs 的 WAR 會叫 fWAR,Baseball Reference 的會叫做 bWAR。因為今天是介紹 FanGraphs 的篇章,等之後輪到介紹 Baseball Reference 的時候再跟大家說明他們的標準。

根據不同類型的選手,在計算上面也會有不同的標準,像是野手跟投手就會有差別。FanGraphs 會根據野手跟投手產生不同的 WAR 計算方式。

野手

計算野手的 WAR 公式為:

WAR = (Batting Runs + Base Running Runs +Fielding Runs + Positional Adjustment + League Adjustment +Replacement Runs) / (Runs Per Win)

可以看到除了打擊成績,跑壘跟守備也會影響最後的結果。另外也會考量守位的差別,還有球員所在的聯盟影響以及球員在大聯盟的出賽頻率而有所補正。

這些指標底下也有再更詳細的計算,如果想知道更多詳情可以參考 FanGraphs 的介紹文章:

https://library.fangraphs.com/war/war-position-players/

投手

計算投手的 WAR 公式為:

WAR = [[([(League “FIP” – “FIP”) / Pitcher Specific Runs Per Win] + Replacement Level) * (IP/9)] * Leverage Multiplier for Relievers] + League Correction

主要是運用數據指標 FIP (Fielding Independent Pitching) 來計算,FIP 又稱獨立防禦率,是一個希望撇除守備影響的投球指標,所以只會用三振、保送、全壘打等來計算。不過在計算 WAR 的時候,FanGraphs 會多算內野高飛球。

再更詳細的計算資料也可以參考 FanGraphs 的介紹文章:

https://library.fangraphs.com/war/calculating-war-pitchers/

球員分佈

FanGraphs 有提供各類球員的 WAR 分佈,可以在分析一位球員的時候參考看看:

介紹完比較通用的 WAR,接下來想介紹一些在 pybaseball 的方法裡可以獲得的其他重要進階數據,他們大多也是計算 WAR 時會參考進去的指標。

打擊

  • wOBA:全名 Weighted On-Base Average,是用來重新衡量各種打者上壘情況的權重,目的是希望能比 OPS 更準確的評價打者。權重也會隨著不同球季有不同的數字,這樣就會比 OPS 的固定數字更準確的表示一個打者該季的能力。
  • **wRAA:**全名 Weighted Runs Above Average,這個數字希望計算一位球員能比平均再貢獻多少得分,如果低於平均就會是負值。他可以透過 wOBA 去運算,然後 WAR 也會參考這個項目,10 wRAA = +1 勝場。
  • wRC & wRC+:全名 Weighted Runs Created,運用 wOBA 去試圖計算出一名打者這球季可以為球隊帶來多少得分。由於是累積值,所以越多打席的打者照理來說 wRC 會要越高。為了解決打席數的問題,就會需要再計算出 wRC+ (Weighted Runs Created Plus),他變成是用 wRAA 再配合 Park Factor (球場效應) 去計算。最後要 * 100 是因為結果會以 wRC+ 100 為聯盟平均,也就是說假設一位打者的 wRC+ 是 120 ,代表他大於聯盟平均的 20%,這樣就解決 wRC 是累積值的這個問題。

守備

  • **DEF:**全名 Defensive Runs Above Average,用來估算球員的防守價值並跟聯盟平均比較,他的算法是 Fielding Runs + Positional Adjustment,這個項目也會用來計算 WAR。Fielding Runs 可以是 UZR (FanGraphs 目前使用的) 或是 DSR,最後 Positional Adjustment 則是會根據守位進行調整,畢竟每個守位的難度不一樣。如果是看單一守位通常會直接看 UZR 或 DSR,接下來會介紹。
  • UZR:全名 Ultimated Zone Rating ,希望計算出一名守備員可以守下多少得分或是造成多少失分,FanGraphs 用許多不同的因素作為考量像是:Outfield Arm Runs (ARM)、Double-Play Runs (DPR)、Range Runs (RngR)、Error Runs (ErrR)。更多更詳細的計算可以透過連結得知。
  • DRS:全名 Defensive Runs Saved,他的概念跟 UZR 很像,都是希望計算出守備員能守下多少失分,不過他考量的因素會跟 UZR 不太一樣,可以透過連結知道更多。

投球

原本打算更深入介紹 FIP,但我發現 pybaseball 也可以抓今年新出的概念 Stuff+, Location+, and Pitching+ Primer | Sabermetrics Library (fangraphs.com) 所以就想在這邊介紹一下。

  • Stuff+:透過一些物理特徵像是:出手點、球速以及水平垂直位移和轉速,去評斷一位投手投出去的主要球種,再依據主要球種去評斷次要球種。希望透過這些數據得知最強的球種為何。
  • Location+:用來表示投手是否能投到正確位置的能力,會根據球種、投打慣用手,以及當時的好壞球球數為依據,並用一個叫做 command 的數據計算來知道相對應那個位置的好壞。
  • Pitching+:前面兩種透過權重以及其他因素考量所計算出來的整合數據,用來衡量一個投手的好壞,這三個數據都能透過 pybaseball 的 pitching_stats 方法來獲得,可以去檢查看看各種投手的數據呈現。

本日小結

今天介紹了一些 FanGraphs 上可以使用 pybaseball 來獲得的進階數據,不過大多都只是比較初步的介紹。主要原因是主題還是會以 pybaseball 為主,要是每個數據都詳細介紹可能會需要很大的篇幅,所以打算用初步的概念讓大家知道這個東西,想要更深入可以透過連結得到更多資訊,還請大家見諒。

其實運動視界也有很多關於棒球進階數據的文章,大家有興趣可以去探索。最後再附上一個 FanGraphs 連結:Getting Started | Sabermetrics Library (fangraphs.com),剛剛我說的東西都可以在這個連結裡面獲得更加詳細的說明,很推薦大家在裡面取寶。

今天先到這裡,一樣很感謝大家耐心地看完,有任何問題歡迎留言,或是有任何我解釋錯誤的地方也歡迎在留言提醒。明天會來帶大家看 pybaseball 在 FanGraphs 這邊的原始碼,讓大家知道他們是怎麼取得 FanGraphs 上的資料,希望大家會喜歡。


上一篇
Day 07 - FanGraphs 隊伍篇
下一篇
Day 09 - FanGraphs 原始碼
系列文
Python 棒球數據分析套件 pybaseball 介紹30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言